*     ***************************************************************** *;
*     ***************************************************************** *;
*     			CHAPITRE 1 - INTRODUCTION À L'INTERFACE STATA           *;
*     ****************************************************************  *;
*     ****************************************************************  *;

*     ***************************************************************** *;
*     ***************************************************************** *;
*       File-Name:      1-intro stata.do      							*;          
*       Date:           		    					           		*;
*       Purpose:        Introduction à stata   			      			*;
*       Input File:     ces_2015.dta                                    *;           
*       Output File:    n.a.                                            *;            
*       Data Output:    ces_2015_pouranalyse.dta                        *;                 
*       Previous file:  n.a.		                                    *;                        
*       Machine:        MBA Ben                                         *;           
*       Details:        présentation de l'interface Stata et des		*;
*						commandes de base afin de manipuler les données	*;
*						et les variables.                               *;   
*     ****************************************************************  *;
*     ****************************************************************  *;


*     ****************************************************************  *;
*     1.5.	Définir le dossier dans lequel vous travaillerez            *;
*     ****************************************************************  *;

cd "/Users/Desktop/stata/"


*     ****************************************************************  *;
*     1.6.	Ouvrir une base de données                                  *;
*     ****************************************************************  *;

use "ces_2015.dta"


*     ****************************************************************  *;
*     1.7.	Avoir un aperçu de vos données	                            *;
*     ****************************************************************  *;

browse


*     ****************************************************************  *;
*     1.8.	Explorez une variable			                            *;
*     ****************************************************************  *;

codebook p_iss_lie, t(100)

tab p_iss_lie

tab p_iss_lie, nolabel

ssc install fre
fre p_iss_lie


*     ****************************************************************  *;
*     1.9.	Créer, (re)coder et transformer des variables			    *;
*     ****************************************************************  *;

gen mentir=p_iss_lie

browse p_iss_lie mentir in 1/20

gen valeur0=0 

br valeur0 in 1/10

replace mentir=. if mentir==5 | mentir==6 | mentir==1000

tab mentir


*     ****************************************************************  *;
*     1.10.	Les étiquettes de (catégories de) variables                 *;
*     ****************************************************************  *;

label variable mentir "Politiciens prêts à mentir"

label define etiquette_mentir 1"Fort. accord" 2"Plutôt accord" 3"Plutôt désaccord" 4"Fort. désaccord"

label values mentir etiquette_mentir

codebook p_iss_lie, t(100)

codebook mentir, t(100)


tabulate p_iss_lie mentir

tabulate p_iss_lie mentir, mi



*     ****************************************************************  *;
*     1.11.	Sauvegarder les nouvelles données			                *;
*     ****************************************************************  *;

// les données sont sauvegardées après l'annexe puisque plusieurs variables utilisées sans les prochains chapitres y sont créées.

*     ****************************************************************  *;
*     1.12.	Fermer une base de données     				                *;
*     ****************************************************************  *;

// les données sont fermées après l'annexe puisque plusieurs variables utilisées sans les prochains chapitres y sont créées.


*     ****************************************************************  *;
*     						ANNEXE									    *;
*     ****************************************************************  *;

// les données doivent être réouverte afin d'exécuter l'annexe

***	Variable region			           
codebook province,t(20)

gen region=.

replace region=0 if province==9 //ontario
replace region=1 if province==11 //quebec
replace region=2 if province==2 //bc
replace region=3 if province==1 | province==3 | province==12 //prairies
replace region=4 if province==4 | province==5 | province==7 | province==10 //maritimes

label define etiquette_region 0"Ontario" 1"Quebec" 2"CB" 3"Prairies" 4"Maritimes"
label values region etiquette_region

tab province region, mi


***	Variable femme
codebook sex_r,t(10)

gen femme=sex_r
replace femme=. if sex_r==3 | sex_r==1000
recode femme (1=0) (2=1)
label define etiquette_sexe 0"homme" 1"femme"
label values femme etiquette_sexe

tab femme


*** Variable trudeau
codebook ldrfeel_trud, all


codebook ldrfeel_trud, t(1000)

 
gen trudeau=ldrfeel_trud


replace trudeau=. if trudeau==998 | trudeau==1000
// ou: recode trudeau (998 1000=.)


tab trudeau


label variable trudeau "Évaluation de Justin Trudeau"

label define etiquette_chef 0"maximum négatif" 50"neutre" 100"maximum positif"

label values trudeau etiquette_chef


*** Variable vote
codebook p_votechce, t(15)

gen vote=p_votechce
recode vote (4/1000=.)
label define etiquette_vote 1"PCC" 2"PLC" 3"NPD"
label values vote etiquette_vote

tab vote


*** Variable satdem
codebook demsat, t(15)

gen satdem=demsat
recode satdem (5 6 1000=.)
replace satdem=abs(satdem-5)
label define etiquette_satdem 1"Pas du tout satisfait" 2"Pas très satisfait" 3"Un peu satisfait" 4"Très satisfait"
label values satdem etiquette_satdem
tab satdem demsat


***	Variable mentir_inverse
codebook mentir, t(10)

gen mentir_inverse=mentir
replace mentir_inverse=abs(5-mentir_inverse)
label define etiquette_mentir_inverse 1"Fort. désaccord" 2"Plutôt désaccord" 3"Plutôt accord" 4"Fort. accord"
label values mentir_inverse etiquette_mentir_inverse
label variable mentir_inverse "Politiciens prêts à mentir"
tab mentir_inverse mentir


*** Variable immigrants et minorites
gen immigrants=feel_immg
recode immigrants (1000=.)

gen minorites=feel_mino
recode minorites (1000=.)

gen musulmans=feel_musl
recode musulmans (1000=.)

label values immigrants etiquette_chef
label values minorites etiquette_chef
label values musulmans etiquette_chef


*     ****************************************************************  *;
*     1.11.	Sauvegarder les nouvelles données			                *;
*     ****************************************************************  *;

save "ces_2015_pouranalyse.dta", replace

*     ****************************************************************  *;
*     1.12.	Fermer une base de données     				                *;
*     ****************************************************************  *;

clear all


*     ***************************************************************** *;
*     ***************************************************************** *;
*     			CHAPITRE 2 - STATISTIQUES UNIVARIÉES		            *;
*     ****************************************************************  *;
*     ****************************************************************  *;

*     ****************************************************************  *;
*     Ouvrir les données à analyser							            *;
*     ****************************************************************  *;

cd "/Users/Desktop/stata/"

use "ces_2015_pouranalyse.dta", clear


*     ****************************************************************  *;
*     2.3	Variable nominale 		                    				*;
*     ****************************************************************  *;

tab region


di 100-37.35 


*     ****************************************************************  *;
*     2.4	Variable ordinale 		                    				*;
*     ****************************************************************  *;
tab mentir_inverse

su mentir_inverse, d

tab education

*     ****************************************************************  *;
*     2.5	Variable intervalle-ratio                    				*;
*     ****************************************************************  *;
summarize trudeau


*     ****************************************************************  *;
*     2.6	Graphiques univariés		                                *;
*     ****************************************************************  *;

hist region, discrete

hist region, discrete percent xlabel(0/4 ,valuelabel)
graph export "/Users/Desktop/stata/hist_region.pdf", replace

hist trudeau, percent


graph pie, over(region) plabel(_all percent, format(%12.0f))

graph box trudeau



*     ****************************************************************  *;
*     2.7	Intervalle de confiance d'une moyenne et d'une proportion   *;
*     ****************************************************************  *;

mean trudeau 

mean trudeau, level(99)

proportion mentir_inverse


*     ****************************************************************  *;
*     					ANNEXE                      					*;
*     ****************************************************************  *;

*** Amélioration visuelle des graphiques ***

#delimit ;
hist region, 
	discrete percent // discrete: indique variable non intervalle-ratio ; percent: pour des % en Y et non la densité
	title(Distribution des répondants par région, size(4)) // 1) le nom du graphique et sa taille
	xtitle(Région canadienne, size(2.5)) // 2) le nom de l'axe des X et sa taille
	xlabel(0(1)4,valuelabel labsize(2) nogrid) // 3) le nom des étiquettes des valeurs de l'axe des X et leur taille
	ytitle(Pourcentage, size(2.5))  // 4) le nom de l'axe des Y et sa taille
	ylabel( ,labsize(2) nogrid); // 5) le nom des étiquettes des valeurs de l'axe des Y, leur taille et ne pas mettre de quadrillage
#delimit cr

#delimit ;
hist trudeau,
	percent
	title(Évaluation de Justin Trudeau, size(4)) 
	xtitle(Évaluation, size(2.5))
	xlabel(0(10)100,valuelabel labsize(2) nogrid)
	ytitle(Pourcentage, size(2.5))
	ylabel( ,labsize(2) nogrid);
#delimit cr


*** Statistiques inférentielles ***


display 29.82185 /sqrt(6538)

display 50.40884 -1.96*0.368818
display 50.40884 +1.96*0.368818


*     ***************************************************************** *;
*     ***************************************************************** *;
*     			CHAPITRE 3 - STATISTIQUES BIVARIÉES			            *;
*     ****************************************************************  *;
*     ****************************************************************  *;

*     ****************************************************************  *;
*     Ouvrir les données à analyser							            *;
*     ****************************************************************  *;
use "/Users/Desktop/stata/ces_2015_pouranalyse.dta", clear


*     ****************************************************************  *;
*     3.1 	Tableaux croisés				                            *;
*     ****************************************************************  *;

tab vote femme 

tab vote femme, nof co


*     ****************************************************************  *;
*     3.2 	Variables nominales				                            *;
*     ****************************************************************  *;

tab vote femme, nof co V


*     ****************************************************************  *;
*     3.3 	Variables ordinales			                                *;
*     ****************************************************************  *;

tab satdem mentir_inverse, nof co gamma

tab satdem mentir, nof co gamma


*     ****************************************************************  *;
*     3.4 	Variables intervalle-ratio		                            *;
*     ****************************************************************  *;

scatter trudeau immigrants

cor trudeau immigrants

cor trudeau immigrants minorites


*     ****************************************************************  *;
*     3.5	Graphiques pour présenter la relation entre deux variables  *;
*     ****************************************************************  *;

hist satdem, by(mentir_inverse) percent xlabel( ,valuelabel labsize(vsmall))

graph bar (mean) immigrants minorites, over(femme)

graph box immigrants minorites, over(femme) 



*     ****************************************************************  *;
*     3.6.1	Le test du chi-carré							            *;
*     ****************************************************************  *;

tab satdem mentir_inverse, nof co gamma chi2


*     ****************************************************************  *;
*     3.6.2	Le test de différence de moyennes				            *;
*     ****************************************************************  *;

tab femme, summarize(immigrants)

// note de base de page
sum immigrants if femme==0
sum immigrants if femme==1
bysort femme: sum immigrants


ttest immigrants, by(femme)

*     ****************************************************************  *;
*     3.6.3	Le test de différence de proportions			            *;
*     ****************************************************************  *;
tab satdem femme, nof co chi2

tab satdem, gen(cat)
tab satdem cat1
tab satdem cat2
tab satdem cat3
tab satdem cat4
	
prtest cat1, by(femme)
prtest cat2, by(femme)

*     ****************************************************************  *;
*     							Annexe			     					*;
*     ****************************************************************  *;


*** Graphiques bivariés ***

graph bar (mean) cat1 cat2 cat3 cat4, over(mentir_inverse) 

#delimit ;
graph bar (mean) cat1 cat2 cat3 cat4, over(mentir_inverse, label(labsize(small))) 
	percentages stack 
	title(Satisfaction démocratique selon la perception que les politiciens sont prêts à mentir, size(3.5))
	legend(size(small) region(lpattern(blank)) label(1 "Pas du tout satisfait") label(2 "Pas très satisfait") label(3 "Un peu satisfait") label(4 "Très satisfait"))
	ylabel(, labsize(small)) 
	ytitle(Pourcentage, size(small)) 
	bar(1, color(orange_red)) bar(2, color(pink)) bar(3, color(bluishgray )) bar(4, color(eltblue )) ; 
#delimit cr


*     ***************************************************************** *;
*     ***************************************************************** *;
*     			CHAPITRE 4 - LA RÉGRESSION LINÉAIRE			            *;
*     ****************************************************************  *;
*     ****************************************************************  *;

*     ****************************************************************  *;
*     Ouvrir les données à analyser							            *;
*     ****************************************************************  *;

use "/Users/Desktop/stata/party.dta", clear



*     ****************************************************************  *;
*     			4.2	Régression linéaire simple	                        *;
*     ****************************************************************  *;

regress enpv logmag


*     ****************************************************************  *;
*     			4.3 Commandes post-estimation    			            *;
*     ****************************************************************  *;

***	4.3.1 Predict	***
predict enpv_hat if e(sample)  
 
predict erreurs if e(sample), residuals  

list enpv enpv_hat erreurs in 1/10  

scatter enpv logmag || scatter enpv_hat logmag || lfit enpv logmag


***	4.3.2 Margins	***

* Examiner les prédictions
quietly: regress enpv logmag
margins, at(logmag=(0 1 2 3 4 5))
marginsplot


* Examiner l'effet marginal d'une variable indépendante
margins, dydx(logmag) at(logmag=(0 1 2 3 4 5))
marginsplot



*     ****************************************************************  *;
*     			4.4	Régression linéaire multiple	                    *;
*     ****************************************************************  *;

regress enpv logmag eneth


***	4.4.1 Les commandes de post-estimation avec plusieurs variables indépendantes	***

margins, at(logmag=(2) eneth=(3))

margins,  dydx(eneth) at(logmag=(0 1 2 3 4 5))



*     ****************************************************************  *;
*     		4.5 Les variables indépendantes (ou de contrôle) nominales  *;
*     ****************************************************************  *;

*** 4.5.1 Variables dichotomiques ***
regress enpv PR

margins, at(PR=(1))

ttest enpv, by(PR)

reg enpv eneth PR


*** 4.5.2 Variables nominales à plusieurs catégories***
reg enpv i.continent

reg enpv ib2.continent


*     ****************************************************************  *;
*     		4.6 La présentation des résultats							*;
*     ****************************************************************  *;

quietly: regress enpv logmag
eststo m1
quietly: regress enpv logmag eneth
eststo m2
quietly: regress enpv PR 
eststo m3
quietly: regress enpv PR eneth
eststo m4

esttab m1 m2 m3 m4 , ci coeflabels(logmag "Dist. mag." eneth "Ethn. div." _cons "Constant") ar2 compress

esttab m1 m2 m3 m4 using "/Users/Desktop/stata/tableau.rtf" , ci coeflabels(logmag "Dist. mag." eneth "Ethn. div." _cons "Constant") ar2 compress replace

coefplot m1 m2 m3 m4, xline(0) coeflabels(logmag="Dist. mag." eneth="Ethn. div." PR="PR" _cons="Constant") legend(ro(1)) 



*     ****************************************************************  *;
*     						Annexe										*;
*     ****************************************************************  *;

*** L’analyse de variance, le R2 et l'erreur-type de la régression
regress enpv logmag


*** Les coefficients standardisés 
regress enpv logmag eneth, beta

regress enpv logmag, beta

pwcorr enpv logmag, sig


*     ***************************************************************** *;
*     ***************************************************************** *;
*     			CHAPITRE 5 - LES TESTS DE DIAGNOSTIC		            *;
*     ****************************************************************  *;
*     ****************************************************************  *;

*     ****************************************************************  *;
*     Ouvrir les données à analyser							            *;
*     ****************************************************************  *;

use "/Users/Desktop/stata/party.dta", clear

reg enpv logmag eneth districts seats uppertier i.decade


*     ****************************************************************  *;
*     		5.1	Multicolinéarité		                                *;
*     ****************************************************************  *;

*** 5.1.1	Inspection visuelle des variables *** 

graph matrix logmag eneth districts seats uppertier


*** 5.1.2	Le coefficient de corrélation de Pearson *** 

pwcorr logmag eneth districts seats uppertier


*** 5.1.3	Le critère d’inflation de la variance (VIF) *** 

estat vif


*     ****************************************************************  *;
*     		5.2	Hétéroscédasticité			                            *;
*     ****************************************************************  *;


*** 5.2.1	Inspection visuelle ***

rvfplot

rvpplot districts


*** 5.2.2	Le test de White ***

estat imtest, white


*** 5.2.3	Solutions		***

reg enpv logmag eneth districts seats uppertier i.decade, robust


*     ****************************************************************  *;
*     		5.3	Omission d'une variable pertinente                      *;
*     ****************************************************************  *;

***		5.3.1	Détection 	***

estat ovtest

estat ovtest, rhs


*     ****************************************************************  *;
*     		5.6	Valeurs extrêmes (ou aberrantes)	                    *;
*     ****************************************************************  *;


***		5.6.1	Détection visuelle		***

rvpplot logmag, mlabel(country)



***		5.6.2	Test de détection		***

quietly: reg enpv logmag eneth districts seats uppertier i.decade
dfbeta

browse country year _dfbeta_1 

list country year _dfbeta_1 if abs(_dfbeta_1)>1 & e(sample)

list country year _dfbeta_2 if abs(_dfbeta_2)>1 & e(sample)

*     ****************************************************************  *;
*     		5.7	Forme de la relation				                    *;
*     ****************************************************************  *;

scatter enpv avemag || qfit enpv avemag

scatter enpv logmag 


*     ****************************************************************  *;
*     		5.8	Distribution non-normale des résidus			        *;
*     ****************************************************************  *;

quietly: reg enpv logmag eneth districts seats uppertier i.decade, robust
predict res, residuals

hist res, kdensity normal

qnorm res

sktest res


*     ***************************************************************** *;
*     ***************************************************************** *;
*     			CHAPITRE 6 - LES EFFETS D'INTERACTION		            *;
*     ****************************************************************  *;
*     ****************************************************************  *;

*     ****************************************************************  *;
*     Ouvrir les données à analyser							            *;
*     ****************************************************************  *;

use "/Users/Desktop/stata/party.dta", clear

drop if continent==3

*     ************************************************************************************  *;
*		6.1	Interaction entre une variable dichotomique et une variable intervalle-ratio	*;
*     ************************************************************************************  *;

regress enpv i.PR##c.eneth
eststo m1

margins, dydx(eneth) at(PR=(0 1))

margins, at(eneth=(1/5) PR=(0 1))
marginsplot


margins, dydx(PR) at(eneth=(1/5))
marginsplot


*     ****************************************************************      *;
*		6.2 Effet d'interaction entre deux variables intervalle-ratio 		*;
*     ****************************************************************      *;

regress enpv c.logmag##c.eneth
eststo m2

margins, dydx(eneth) at(logmag=(0 1 2 3 4 5))
marginsplot


margins, dydx(logmag) at(eneth=(1/5))
marginsplot



*     ****************************************************************      *;
*		6.3 La présentation des résultats d'interaction						*;
*     ****************************************************************      *;

# delimit ;
esttab m1 m2 , b(2) se(2) ar2  
nobaselevels  
coeflabels(1.PR "PR" eneth "Diversité ethnique" 1.PR#c.eneth "PR X div. ethnique" logmag "Magnitude du district" c.logmag#c.eneth "Mag. du district X div. ethnique" _cons "Constant") 
star(* 0.10 ** 0.05 *** 0.01) staraux 
nodep mtitles("PR" "Mag. du district")
onecell wide varwidth(32) modelwidth(18); 
#delimit cr

quietly: regress enpv i.PR##c.eneth
quietly: margins, at(eneth=(1/5) PR=(0 1))
# delimit ;
marginsplot, addplot(hist eneth, percent yaxis(2) yscale(alt)  fcolor(%25) ytitle(pourcentage, axis(2))) 
title(Le nombre prédit de partis politiques selon le système électoral et la diversité ethnique , size(medsmall)) 
xtitle(Diversité ethnique) ytitle(valeurs prédites);
#delimit cr

quietly: regress enpv c.logmag##c.eneth
quietly: margins, dydx(eneth) at(logmag=(0 1 2 3 4 5))
# delimit ;
marginsplot, addplot(hist logmag, percent yaxis(2) yscale(alt) fcolor(%25) ytitle(pourcentage, axis(2))) title(L'effet de la diversité ethnique selon le système électoral, size(medsmall)) legend(off) xtitle(Magnitude du district (log)) ytitle(effet); 
#delimit cr



